
package javaio.FileInputOutputStream;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        /*
        FileInputStream,获取文件的输入流，创建FileInputStream对象后，系统会系统加throw Exception,
        或者用try catch 包裹 ，surround with try/catch
         */
        FileInputStream inputStream = null;
        try {
            //FileInputStream inputStream = new FileInputStream("test.txt"); //原始的创建对象语句，不考虑finally时
            inputStream = new FileInputStream("test.txt");
            //文件名支持相对路径和绝对路径,windows要用\\或/,其中\是转义字符，要用\再转义一次，才表示\本身
            //这里的相对路径指的是项目下的路径，比如"test.txt"指的是和src平级的目录，而不是package包里面的目录。
            //在这里关闭文件不安全，因为代码如果报错，程序就直接停止了，执行不到关闭文件这段代码了。
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        /*
        在使用完一个流后，必须关闭这个流释放资源，否则资源一直被占用，建议在finally里进行关闭，但这样
        就要把创建对象定义在try外层前面
         */
        finally {
            if(inputStream != null) {  //先判断inputStream是否为空，为空下面不执行，比较安全了
                try {
                    inputStream.close();  //使用close()时，系统还会提示创建try catch，难免繁琐。
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
/*
简便方法请看Main2.java
 */
